//package com.ruoyi.personnel.management.position.service;
//
//import com.ruoyi.common.utils.StringUtils;
//import com.ruoyi.personnel.management.position.domain.PositionInfo;
//import com.ruoyi.personnel.management.position.mapper.PositionInfoMapper;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.stereotype.Service;
//
//import java.util.List;
//
///**
// *
// * 职位管理
// * 业务层处理
// * @author Drj 2021/6/28
// */
//@Service
//public class PositionInfoServiceImpl implements IPositionInfoService {
//    @Autowired
//    private PositionInfoMapper positionInfoMapper;
//
//
//    /**
//     * 查询职位
//     *
//     * @param positionInfo
//     * @return
//     */
//    @Override
//    public List<PositionInfo> selectPositionInfoList(PositionInfo positionInfo) {
//        return positionInfoMapper.selectPositionInfoList(positionInfo);
//    }
//
//    /**
//     * 根据编号查询职位
//     *
//     * @param positionInfoId 职位编号
//     * @return
//     */
//    @Override
//    public PositionInfo selectPositionInfoById(Integer positionInfoId) {
//        return positionInfoMapper.selectPositionInfoById(positionInfoId);
//    }
//
//    /**
//     * 新增职位
//     *
//     * @param positionInfo
//     * @return
//     */
//    @Override
//    public int insertPositionInfo(PositionInfo positionInfo) {
//        if (StringUtils.isNotNull(positionInfoMapper.selectPositionInfoById(positionInfo.getPositionInfoId()))) {
//            //已存在
//            return 0;
//        }
//        if (StringUtils.isNull(positionInfo.getPositionInfoParentId())) {
//            //无父级产品类别
//            return positionInfoMapper.insertPositionInfo(positionInfo);
//        }
//        //有父级产品类别
//        PositionInfo info = positionInfoMapper.selectPositionInfoById(positionInfo.getPositionInfoParentId());
//        positionInfo.setAncestors(info.getAncestors() + "," + positionInfo.getPositionInfoParentId());
//        return positionInfoMapper.insertPositionInfo(positionInfo);
//    }
//
//    /**
//     * 更新职位
//     *
//     * @param positionInfo
//     * @return
//     */
//    @Override
//    public int updatePositionInfo(PositionInfo positionInfo) {
//        if (!StringUtils.isNotNull(positionInfoMapper.selectPositionInfoById(positionInfo.getPositionInfoId()))) {
//            //不存在
//            return 0;
//        }
//        //新的父级职位
//        PositionInfo newParentPositionInfo = positionInfoMapper.selectPositionInfoById(positionInfo.getPositionInfoParentId());
//        //要更新的职位的旧属性
//        PositionInfo oldPositionInfo = positionInfoMapper.selectPositionInfoById(positionInfo.getPositionInfoId());
//        if (StringUtils.isNotNull(newParentPositionInfo))//存在新的父级职位
//        {
//            //新的祖级编号
//            String newAncestors = newParentPositionInfo.getAncestors() + "," + newParentPositionInfo.getPositionInfoId();
//            //旧的祖级编号
//            String oldAncestors = oldPositionInfo.getAncestors();
//            positionInfo.setAncestors(newAncestors);//更新祖级编号
//            updatePositionInfoChildren(positionInfo.getPositionInfoId(), newAncestors, oldAncestors);
//        }
//        return positionInfoMapper.updatePositionInfo(positionInfo);
//    }
//
//
//
//    /**
//     * 修改子级职位关系
//     * @param positionInfoId 被修改的职位ID
//     * @param newAncestors 新的父ID集合
//     * @param oldAncestors 旧的父ID集合
//     */
//    public void updatePositionInfoChildren(Integer positionInfoId, String newAncestors, String oldAncestors)
//    {
//        List<PositionInfo> children = positionInfoMapper.selectChildrenPositionInfoById(positionInfoId);
//        for (PositionInfo child : children)
//        {
//            //更新子职位的祖级编号
//            child.setAncestors(child.getAncestors().replace(oldAncestors, newAncestors));
//        }
//        if (children.size() > 0)
//        {
//            positionInfoMapper.updatePositionInfoChildren(children);
//        }
//    }
//
//
//    /**
//     * 删除职位
//     * 仅修改删除标志
//     *
//     * @param positionInfo
//     * @return
//     */
//    @Override
//    public int updatePositionInfoDeleteFlag(PositionInfo positionInfo) {
//        return positionInfoMapper.updatePositionInfoDeleteFlag(positionInfo);
//    }
//
//
//
//
//
//
//
//
//
//
//
//
//}
